package io.dy.anno;

import io.dy.constant.RedisKeyPrefixConstant;
import io.dy.enums.LimitType;

import java.lang.annotation.*;

/**
 * @author : dmj
 * @date: 2024/6/25 3:46 下午
 * @description: 限流注解
 */
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface RateLimiter {

    /**
     * 限流唯一标识前缀
     */
    String prefixKey() default RedisKeyPrefixConstant.RATE_LIMIT_KEY;

    /**
     * 限流时间 (秒)
     */
    int time() default 60;

    /**
     * 单位时间内最多访问次数
     */
    int count() default 100;

    /**
     * 限流类型
     */
    LimitType limitType() default LimitType.DEFAULT;
}
